/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.fatecpg.zanotti.acessobanco;

import br.com.fatecpg.zanotti.modelo.Encomenda;
import javax.swing.*;
import java.sql.*;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;

/**
 * Classe responsável por realizar todas consultas relacionadas a Tabela da janela de Compra.
 * @author F.L. Zanotti
 */
public class conTableCompra {
/**
 * Realiza uma Consulta pela tabela toda de Compra.
 * @param testeTabela
 * @return
 */
    public JTable ConsultaTabelaToda(JTable testeTabela) {
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            con = AbreConexao.getConexao();

            String query = "SELECT TO_CHAR(e.DTENTREGA, 'DD/MM/YY') as DTENTREGA, e.ICENTREGUE, p.NMMODELO, e.cdencomenda, f.NMFORNECEDOR from ENCOMENDA e, PRODUTO p, FORNECEDOR f WHERE e.CDPRODUTO=p.CDPRODUTO AND f.CDFORNECEDOR=p.CDFORNECEDOR";


            pst = con.prepareStatement(query);

            rs = pst.executeQuery();
            DefaultTableModel modelo = (DefaultTableModel) testeTabela.getModel();
            modelo.setNumRows(0);

            while (rs.next()) {
                String NMFORNECEDOR = rs.getString("NMFORNECEDOR");
                String NMMODELO = rs.getString("NMMODELO");
                String CDENCOMENDA = rs.getString("CDENCOMENDA");
                String ICENTREGUE = rs.getString("ICENTREGUE");
                String DTENTREGA = rs.getString("DTENTREGA");

                NMFORNECEDOR = NMFORNECEDOR.trim();
                NMMODELO = NMMODELO.trim();
                CDENCOMENDA = CDENCOMENDA.trim();
                ICENTREGUE = ICENTREGUE.trim();
                DTENTREGA = DTENTREGA.trim();

                Vector teste = new Vector();
                teste.addElement(NMFORNECEDOR);
                teste.addElement(NMMODELO);
                teste.addElement(CDENCOMENDA);
                teste.addElement(ICENTREGUE);
                teste.addElement(DTENTREGA);

                modelo.addRow(teste);


            }
            System.out.println(testeTabela.getRowCount());
            return testeTabela;
        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            try {
                rs.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                pst.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                con.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }


        return null;
    }
/**
 * Realiza uma Consulta para preencher a Tabela PRoduto a partir do Nome de Modelo dado
 * @param testeTabela
 * @param s
 * @return
 */
    public JTable ConsultaTabelaPorProduto(JTable testeTabela, String s){
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            con = AbreConexao.getConexao();

                        String query = "SELECT TO_CHAR(e.DTENTREGA, 'DD/MM/YY') as DTENTREGA, e.ICENTREGUE, p.NMMODELO, e.CDENCOMENDA, f.NMFORNECEDOR " +
                    "from LOJA l, ENCOMENDA e, PRODUTO p, FORNECEDOR f  " +
                    "WHERE e.CDLOJA = l.CDLOJA  " +
                    "AND e.CDPRODUTO=p.CDPRODUTO " +
                    "AND f.CDFORNECEDOR=p.CDFORNECEDOR " +
                    "AND  NMMODELO LIKE ?";

            pst = con.prepareStatement(query);

            pst.setString(1, s+'%');

            rs = pst.executeQuery();
            DefaultTableModel modelo = (DefaultTableModel) testeTabela.getModel();
            modelo.setNumRows(0);

            while (rs.next()) {
                String NMFORNECEDOR = rs.getString("NMFORNECEDOR");
                String NMMODELO = rs.getString("NMMODELO");
                String CDENCOMENDA = rs.getString("CDENCOMENDA");
                String ICENTREGUE = rs.getString("ICENTREGUE");
                String DTENTREGA = rs.getString("DTENTREGA");

                NMFORNECEDOR = NMFORNECEDOR.trim();
                NMMODELO = NMMODELO.trim();
                CDENCOMENDA = CDENCOMENDA.trim();
                ICENTREGUE = ICENTREGUE.trim();
                DTENTREGA = DTENTREGA.trim();

                Vector teste = new Vector();
                teste.addElement(NMFORNECEDOR);
                teste.addElement(NMMODELO);
                teste.addElement(CDENCOMENDA);
                teste.addElement(ICENTREGUE);
                teste.addElement(DTENTREGA);


                modelo.addRow(teste);


            }
            System.out.println(testeTabela.getRowCount());
            return testeTabela;
        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            try {
                rs.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                pst.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                con.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return null;
    }

    public JTable ConsultaTabelaPorFornec(JTable testeTabela, String s){
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            con = AbreConexao.getConexao();

            pst = con.prepareStatement("SELECT TO_CHAR(e.DTENTREGA, 'DD/MM/YY') as DTENTREGA, e.ICENTREGUE, p.NMMODELO, e.CDENCOMENDA, f.NMFORNECEDOR " +
                    "from LOJA l, ENCOMENDA e, PRODUTO p, FORNECEDOR f " +
                    "where e.CDLOJA = l.CDLOJA " +
                    "AND e.CDPRODUTO=p.CDPRODUTO " +
                    "AND f.CDFORNECEDOR=p.CDFORNECEDOR " +
                    "AND f.NMFORNECEDOR LIKE  '" + s + "%'");

            rs = pst.executeQuery();
            DefaultTableModel modelo = (DefaultTableModel) testeTabela.getModel();
            modelo.setNumRows(0);

            while (rs.next()) {
                String NMFORNECEDOR = rs.getString("NMFORNECEDOR");
                String NMMODELO = rs.getString("NMMODELO");
                String CDENCOMENDA = rs.getString("CDENCOMENDA");
                String ICENTREGUE = rs.getString("ICENTREGUE");
                String DTENTREGA = rs.getString("DTENTREGA");

                NMFORNECEDOR = NMFORNECEDOR.trim();
                NMMODELO = NMMODELO.trim();
                CDENCOMENDA = CDENCOMENDA.trim();
                ICENTREGUE = ICENTREGUE.trim();
                DTENTREGA = DTENTREGA.trim();

                Vector teste = new Vector();
                teste.addElement(NMFORNECEDOR);
                teste.addElement(NMMODELO);
                teste.addElement(CDENCOMENDA);
                teste.addElement(ICENTREGUE);
                teste.addElement(DTENTREGA);


                modelo.addRow(teste);


            }
            System.out.println(testeTabela.getRowCount());
            return testeTabela;
        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            try {
                rs.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                pst.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                con.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }

        return null;
    }

        public String ConsultaMAXEncomenda() {
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            con = AbreConexao.getConexao();

            String query = "SELECT MAX(CDENCOMENDA)+1 CDENCOMENDA from ENCOMENDA";

            pst = con.prepareStatement(query);

            rs = pst.executeQuery();
String CDENCOMENDA= "";
            while (rs.next()) {

                CDENCOMENDA = rs.getString("CDENCOMENDA");


            }

            return CDENCOMENDA;
        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            try {
                rs.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                pst.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                con.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }


        return null;
    }
        public Encomenda ConsultaObjetoPorLinha(String str) {
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            con = AbreConexao.getConexao();

            String query = "SELECT CDENCOMENDA, CDPRODUTO,CDFORNECEDOR,CDLOJA,TO_CHAR(DTENTREGA,'DD/MM/YY') as DTENTREGA,ICENTREGUE from ENCOMENDA" +
                    " WHERE CDENCOMENDA = ?";

            pst = con.prepareStatement(query);
            pst.setInt(1, Integer.parseInt(str));
            rs = pst.executeQuery();

            while (rs.next()) {

                Encomenda.getInstancia().setCDENCOMENDA(rs.getString("CDENCOMENDA"));
                Encomenda.getInstancia().setCDFORNECEDOR(rs.getString("CDFORNECEDOR"));
                Encomenda.getInstancia().setCDLOJA(rs.getString("CDLOJA"));
                
                Encomenda.getInstancia().setCDPRODUTO(rs.getString("CDPRODUTO"));
                Encomenda.getInstancia().setDTENTREGA(rs.getString("DTENTREGA"));
                Encomenda.getInstancia().setICENTREGUE(rs.getString("ICENTREGUE"));

            }

            return Encomenda.getInstancia();
        } catch (SQLException e) {
            System.out.println(e);
        } finally {
            try {
                rs.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                pst.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            try {
                con.close();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }


        return null;
    }
}
